package com.haliyoo.adhere.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import android.util.Log;

/**
 * @（#）:FileManager.java
 * @description: 文件读写管理
 * @author: changbao.wang 2011-02-24
 * @version:
 * @modify:
 * @Copyright: mapabc.com
 */

public class FileManager {
	private static String TAG = "FileManager";
	/**
	* 获取终端内文件数据
	*
	*
	*@param filepath 文件路径
	*@return byte[]
	*/
	public static byte[] getFileData(String filepath) throws Exception {
		File file = new File(filepath);
		if(!file.exists()){
			Log.i(TAG, "------file is not exist---------");
			return null;
		}
		FileInputStream is = new FileInputStream(file);
		java.io.DataInputStream servletIn = new java.io.DataInputStream(is);
		java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream();
		byte[] bufferByte = new byte[256];
		int l = -1;
		while ((l = servletIn.read(bufferByte)) > -1) {
			bout.write(bufferByte, 0, l);
			bout.flush();
		}
		byte[] inByte = bout.toByteArray();
		servletIn.close();
		bout.close();
		if (inByte.length == 0) {
			return null;
		}
		return inByte;
	}
	/**
	* 将输入的数据存入本地文件
	*
	*
	*@param filepath 文件路径
	*@param data 存入文件的数据
	*@param iscontinue true,追加在文件最后，false替换当前内容
	*@return byte[]
	*/
	public static boolean writeFileData(String filepath,String data,boolean iscontinue) throws Exception {
		FileOutputStream fout = null;
		OutputStreamWriter osw = null;
		File file = new File(filepath);
		if(!file.exists()){
			file.createNewFile();
			Log.i(TAG, "------create new logfile---------");
		}
		if(!file.canWrite()){
			Log.i(TAG, "------file is not can write---------");
			return false;
		}
		fout = new FileOutputStream(file, iscontinue); // true表示追加到已存在的文件
		osw = new OutputStreamWriter(fout);
		osw.write(data);
		osw.flush();
		osw.close();
		fout.close();
        return true;
	}

	/**
	 * 删除文件夹
	 * 
	 * @param filePathAndName
	 *            String 文件夹路径及名称 如c:/fqf
	 * @param fileContent
	 *            String
	 * @return boolean
	 */
	public static void delFolder(String folderPath) {
		try {
			delAllFile(folderPath); // 删除完里面所有内容
			String filePath = folderPath;
			filePath = filePath.toString();
			java.io.File myFilePath = new java.io.File(filePath);
			myFilePath.delete(); // 删除空文件夹

		} catch (Exception e) {
			System.out.println("删除文件夹操作出错");
			e.printStackTrace();

		}
	}

	/**
	 * 删除文件夹里面的所有文件
	 * 
	 * @param path
	 *            String 文件夹路径 如 c:/fqf
	 */
	public static void delAllFile(String path) {
		File file = new File(path);
		if (!file.exists()) {
			return;
		}
		if (!file.isDirectory()) {
			return;
		}
		String[] tempList = file.list();
		File temp = null;
		for (int i = 0; i < tempList.length; i++) {
			if (path.endsWith(File.separator)) {
				temp = new File(path + tempList[i]);
			} else {
				temp = new File(path + File.separator + tempList[i]);
			}
			if (temp.isFile()) {
				temp.delete();
			}
			if (temp.isDirectory()) {
				delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
				delFolder(path + "/" + tempList[i]);// 再删除空文件夹
			}
		}
	}
}
